/**
 * 公告管理模拟数据
 */

// 公告列表数据
export const mockAnnouncementList = [
  {
    id: 1,
    title: '关于教室预约系统维护的通知',
    content: '尊敬的用户：\n\n为了提升服务质量，系统将于2023年10月15日22:00至次日凌晨02:00进行维护升级。维护期间，系统将暂停服务，请您提前做好安排。\n\n给您带来的不便，敬请谅解。\n\n教室预约系统管理团队\n2023年10月10日',
    type: '维护',
    publisher_id: 1,
    priority: 1, // 重要
    status: 1, // 已发布
    start_time: '2023-10-10 15:30:00',
    end_time: '2023-10-16 00:00:00',
    view_count: 256,
    created_at: '2023-10-10 15:30:00',
    updated_at: '2023-10-10 15:30:00'
  },
  {
    id: 2,
    title: '期末考试期间教室预约规则变更通知',
    content: '各位师生：\n\n随着期末考试临近，为保障考试顺利进行，自2023年12月20日起至2024年1月10日止，教室预约系统将进行调整：\n\n1. 优先保障考试用教室，已预约的非考试用途将适当调整；\n2. 临时预约需提前3天申请，并说明用途；\n3. 学习自习类预约将限制人数和时长。\n\n特此通知，感谢配合。\n\n教务处',
    type: '通知',
    publisher_id: 1,
    priority: 1, // 重要
    status: 1, // 已发布
    start_time: '2023-10-05 09:15:00',
    end_time: '2024-01-10 00:00:00',
    view_count: 189,
    created_at: '2023-10-05 09:15:00',
    updated_at: '2023-10-05 09:15:00'
  },
  {
    id: 3,
    title: '关于教学楼A栋装修的通知',
    content: '尊敬的师生：\n\n为改善教学环境，教学楼A栋将于寒假期间（2024年1月15日至2月15日）进行内部装修。装修期间，该栋教室将无法使用，请提前安排相关教学活动。\n\n装修后的教室将提供更舒适的教学环境，感谢您的理解与支持。',
    type: '通知',
    publisher_id: 1,
    priority: 0, // 普通
    status: 1, // 已发布
    start_time: '2023-09-28 14:20:00',
    end_time: '2024-02-15 00:00:00',
    view_count: 135,
    created_at: '2023-09-28 14:20:00',
    updated_at: '2023-09-28 14:20:00'
  },
  {
    id: 4,
    title: '学生社团活动场地申请流程',
    content: '各学生社团：\n\n为规范社团活动场地使用，自即日起，社团活动场地申请需遵循以下流程：\n\n1. 提前一周在系统中提交申请；\n2. 申请表需包含活动内容、参与人数、设备需求等；\n3. 经学生处审批通过后方可使用；\n4. 活动结束后需做场地清理并填写使用反馈。\n\n请各社团负责人知悉并遵守。\n\n学生处',
    type: '活动',
    publisher_id: 2,
    priority: 0, // 普通
    status: 1, // 已发布
    start_time: '2023-09-20 11:30:00',
    end_time: null,
    view_count: 210,
    created_at: '2023-09-20 11:30:00',
    updated_at: '2023-09-20 11:30:00'
  },
  {
    id: 5,
    title: '多媒体教室使用指南',
    content: '各位老师：\n\n为保障多媒体教室设备的正常使用，特发布本使用指南：\n\n1. 使用前请检查设备状态；\n2. 课后请关闭所有电源及设备；\n3. 如遇设备故障，请及时联系信息中心；\n4. 请勿私自调整或拆卸设备。\n\n附：常见问题解决方法...\n\n信息中心',
    type: '通知',
    publisher_id: 3,
    priority: 0, // 普通
    status: 1, // 已发布
    start_time: '2023-09-15 16:45:00',
    end_time: null,
    view_count: 178,
    created_at: '2023-09-15 16:45:00',
    updated_at: '2023-09-15 16:45:00'
  },
  {
    id: 6,
    title: '2023学年第一学期教室使用情况统计',
    content: '2023学年第一学期已接近尾声，现对本学期教室使用情况做简要统计：\n\n1. 总预约次数：3,582次\n2. 高峰时段：周一至周五14:00-16:00\n3. 使用率最高的教室：图书馆205，共使用215次\n4. 预约取消率：8.3%\n\n详细报告请见附件。\n\n教务处',
    type: '其他',
    publisher_id: 1,
    priority: 0, // 普通
    status: 0, // 草稿
    start_time: null,
    end_time: null,
    view_count: 0,
    created_at: '2023-09-10 10:00:00',
    updated_at: '2023-09-10 10:00:00'
  },
  {
    id: 7,
    title: '临时停电通知',
    content: '各位师生：\n\n因校园电网改造，教学区将于2023年10月20日（周五）上午9:00-12:00进行临时停电。停电期间，部分教室将无法正常使用，请做好相应调整。\n\n后勤处',
    type: '维护',
    publisher_id: 4,
    priority: 2, // 紧急
    status: 2, // 已过期
    start_time: '2023-09-05 17:30:00',
    end_time: '2023-10-21 00:00:00',
    view_count: 320,
    created_at: '2023-09-05 17:30:00',
    updated_at: '2023-09-05 17:30:00'
  }
];

// 生成模拟分页数据
export function getMockAnnouncementData(params) {
  const { pageNum, pageSize, keyword, type, status } = params;
  
  // 过滤数据
  let filteredList = [...mockAnnouncementList];
  
  if (keyword) {
    filteredList = filteredList.filter(item => {
      return item.title.includes(keyword) || item.content.includes(keyword);
    });
  }
  
  if (type) {
    filteredList = filteredList.filter(item => item.type === type);
  }
  
  if (status !== '' && status !== undefined) {
    filteredList = filteredList.filter(item => item.status === parseInt(status));
  }
  
  // 计算总数
  const total = filteredList.length;
  
  // 分页
  const startIndex = (pageNum - 1) * pageSize;
  const endIndex = Math.min(startIndex + pageSize, total);
  const list = filteredList.slice(startIndex, endIndex);
  
  return {
    code: 1,
    msg: 'success',
    data: {
      list,
      total
    }
  };
}

// 模拟添加公告
export function mockAddAnnouncement(data) {
  // 生成ID
  const maxId = Math.max(...mockAnnouncementList.map(item => item.id));
  const now = new Date();
  const nowStr = now.toLocaleString('zh-CN', {
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit',
    hour12: false
  }).replace(/\//g, '-');

  // 设置默认值，匹配表结构
  const newData = {
    ...data,
    id: maxId + 1,
    publisher_id: 1, // 默认发布者ID
    view_count: 0,
    created_at: nowStr,
    updated_at: nowStr,
    // 设置生效时间为当前时间，如果未指定
    start_time: data.start_time || nowStr
  };
  
  mockAnnouncementList.unshift(newData);
  
  return {
    code: 1,
    msg: 'success',
    data: null
  };
}

// 模拟更新公告
export function mockUpdateAnnouncement(data) {
  const index = mockAnnouncementList.findIndex(item => item.id === data.id);
  if (index !== -1) {
    // 更新时间
    const now = new Date();
    const nowStr = now.toLocaleString('zh-CN', {
      year: 'numeric',
      month: '2-digit',
      day: '2-digit',
      hour: '2-digit',
      minute: '2-digit',
      second: '2-digit',
      hour12: false
    }).replace(/\//g, '-');

    mockAnnouncementList[index] = {
      ...mockAnnouncementList[index],
      ...data,
      updated_at: nowStr
    };
    return {
      code: 1,
      msg: 'success',
      data: null
    };
  }
  return {
    code: 0,
    msg: '公告不存在',
    data: null
  };
}

// 模拟删除公告
export function mockDeleteAnnouncements(ids) {
  const idsArray = Array.isArray(ids) ? ids : [ids];
  
  for (let i = 0; i < idsArray.length; i++) {
    const index = mockAnnouncementList.findIndex(item => item.id === idsArray[i]);
    if (index !== -1) {
      mockAnnouncementList.splice(index, 1);
    }
  }
  
  return {
    code: 1,
    msg: 'success',
    data: null
  };
}

// 模拟设置公告状态
export function mockSetAnnouncementStatus(status, id) {
  const index = mockAnnouncementList.findIndex(item => item.id === id);
  if (index !== -1) {
    const now = new Date();
    const nowStr = now.toLocaleString('zh-CN', {
      year: 'numeric',
      month: '2-digit',
      day: '2-digit',
      hour: '2-digit',
      minute: '2-digit',
      second: '2-digit',
      hour12: false
    }).replace(/\//g, '-');

    mockAnnouncementList[index].status = parseInt(status);
    mockAnnouncementList[index].updated_at = nowStr;
    
    // 如果设置为发布状态，同时设置开始时间为当前时间（如果未设置）
    if (parseInt(status) === 1 && !mockAnnouncementList[index].start_time) {
      mockAnnouncementList[index].start_time = nowStr;
    }
    
    return {
      code: 1,
      msg: 'success',
      data: null
    };
  }
  return {
    code: 0,
    msg: '公告不存在',
    data: null
  };
}

// 模拟增加阅读量
export function mockIncrementViewCount(id) {
  const index = mockAnnouncementList.findIndex(item => item.id === id);
  if (index !== -1) {
    mockAnnouncementList[index].view_count += 1;
    return {
      code: 1,
      msg: 'success',
      data: null
    };
  }
  return {
    code: 0,
    msg: '公告不存在',
    data: null
  };
} 